package com.kingyun.gpsinspection.purificationservice.services.som.innerservice.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.kingyun.gpsinspection.purificationservice.dao.mapper.OpcPropertyMapper;
import com.kingyun.gpsinspection.purificationservice.facade.model.OpcProperty;
import com.kingyun.gpsinspection.purificationservice.facade.service.som.OpcPropertyService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.*;

/**
 * Created by yangcs on 2017/12/27.
 */
public class OpcPropertyServiceImpl implements OpcPropertyService {

    @Autowired
    private OpcPropertyMapper opcPropertyMapper;

    @Override
    public int add(OpcProperty opcProperty) {
        opcProperty.setCreateTime(new Date());
        opcProperty.setModifyTime(new Date());
        opcProperty.setStatus(0);
        return opcPropertyMapper.insertSelective(opcProperty);
    }

    @Override
    public int update(OpcProperty opcProperty) {
        opcProperty.setModifyTime(new Date());
        return opcPropertyMapper.updateByPrimaryKeySelective(opcProperty);
    }

    @Override
    public JSONObject list(OpcProperty opcProperty) {
        JSONObject jsonObject = new JSONObject();
        opcProperty.setLimit(opcProperty.getLimit() == null ? 10 : opcProperty.getLimit());
        opcProperty.setOffset(opcProperty.getOffset() == null ? 0 : opcProperty.getOffset());
        jsonObject.put("total", opcPropertyMapper.queryCount(opcProperty));
        jsonObject.put("rows", JSON.toJSON(opcPropertyMapper.queryList(opcProperty)));
        return jsonObject;
    }

    @Override
    public JSONObject compareList(OpcProperty opcProperty) {
        JSONObject jsonObject = new JSONObject();
        opcProperty.setOffset(opcProperty.getOffset() == null ? 0 : opcProperty.getOffset());
        opcProperty.setLimit(opcProperty.getLimit() == null ? 10 : opcProperty.getLimit());
        List<OpcProperty> list = opcPropertyMapper.queryList(opcProperty);
        List<String> values;
        List<OpcProperty> newList = new ArrayList<>();
        if( list != null && list.size() > 0 ){
            for( OpcProperty op: list ){
                // 实时数据
                // 最后一次工单数据
                values = opcPropertyMapper.queryDataList(op.getOpcPropertyId());
                if(values != null && values.size() > 0){
                    op.setLastValue(values.get(0));
                }
            }
        }
        jsonObject.put("total", opcPropertyMapper.queryCount(opcProperty));
        jsonObject.put("rows", JSON.toJSON(list));
        return jsonObject;
    }

    @Override
    public OpcProperty selectById(String opcPropertyId) {
        return opcPropertyMapper.selectByPrimaryKey(opcPropertyId);
    }

    @Override
    public int delete(String opcPropertyId,String userId) {
        Map map = new HashMap<>();
        map.put("modifyTime",new Date());
        map.put("modifyUserId",userId);
        map.put("opcPropertyId",opcPropertyId);
        return opcPropertyMapper.delete(map);
    }
}
